# -*- coding: utf-8 -*-
from Modele.Entite.Personnage import *
import random
from helper import *
import math

class LogomateGentil(Personnage):
	def __init__(self, modele):
		Personnage.__init__(self, modele)
		random.seed(10) #FIX temporaire (permet de voir le logomates faire les même actions dans le même ordre)
		self.nom = "LogomateGentil" + str(GLOB.currentLogomate)
		GLOB.currentLogomate+=1
		self.destination = [None,None]
		self.angle = None
		self.vitesse = 0.10
		
	def execution(self): #fonction de base executer a chaque tick
		#Début
		if self.destination[0] == None:
			self.destination[0] = random.randint(10,40)
			self.destination[1] = random.randint(10,40)
			self.angle = Helper.calcAngle(self.position[0],self.position[1],self.destination[0],self.destination[1])
		#Quand on atteind la position voulu
		elif int(self.position[0]) == self.destination[0] and int(self.position[1]) >= self.destination[1]-1 and int(self.position[1]) < self.destination[1] +1:
			self.destination[0] = random.randint(10,40)
			self.destination[1] = random.randint(10,40)
			self.angle =  Helper.calcAngle(self.position[0],self.position[1],self.destination[0],self.destination[1])
		#Quand on se déplace
		else:
			positions = Helper.getAngledPoint(math.degrees(self.angle), self.vitesse, self.position[0], self.position[1])
			self.teleporter(positions[0],positions[1],2)

class LogomateGardien(Personnage):

	def __init__(self, modele):
		Personnage.__init__(self, modele)
		random.seed(10) 
		self.nom = "LogomateGardien" + str(GLOB.currentGardien)
		GLOB.currentGardien+=1
		self.destination = [None,None] # Position [x,y,z]
		self.angle = None
		self.vitesse = 0.10
		self.listActions = [] # Action comme dans joueur
		self.cibleProteger = [35,35] # Position [x,y,z]
		
	def execution(self): #fonction de base du gardien
		#Début
		if self.destination[0] == None:
			self.destination[0] = random.randint(5,50)
			self.destination[1] = random.randint(5,50)
			self.angle =  Helper.calcAngle(self.position[0],self.position[1],self.destination[0],self.destination[1])
			self.listActions.append("rot")
		#Quand on atteind la position voulu
		elif int(self.position[0]) == self.destination[0] and int(self.position[1]) >= self.destination[1]-1 and int(self.position[1]) < self.destination[1] +1:
			self.destination[0] = self.cibleProteger[0] - 20 + random.randint(0,20)
			self.destination[1] = self.cibleProteger[1] - 20 + random.randint(0,20)
			self.angle =  Helper.calcAngle(self.position[0],self.position[1],self.destination[0],self.destination[1])
			self.listActions.append("rot")
		#Quand on se déplace
		else:
			positions = Helper.getAngledPoint(math.degrees(self.angle), self.vitesse, self.position[0], self.position[1])
			self.teleporter(positions[0],positions[1],1)
	def cibler(self, cible):
		if cible.nom != "":
			if cible.nom in 'Joueur1' or  cible.nom in 'Joueur2'  or  cible.nom in 'Joueur3'  or  cible.nom in 'Joueur4' :
				pass#cible.modVie(-1)
				''' Suit le joueur - problème avec les collisions
				if Helper.calcDistance(self.cibleProteger[0],self.cibleProteger[1],cible.position[0],cible.position[1]) < 20:
					self.destination[0] = cible.position[0]
					self.destination[1] = cible.position[1]
					'''
		

	def traitementActions(self): # Pour la rotation
		actif = ""
		for action in self.listActions:
			if action[0] == "r": #une rotation (sa premiere lettre est un r)
				self.listActions.remove(action) #on enleve automatiquement l'action, car on veut les traiter une fois
				actif += "rot"
		return actif